﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//enum Season
//{
//    Spring = 1,
//    Summer,
//    Fall = 1,
//    Winter
//}

enum Season : byte
{
    Spring = 1,
    Summer,
    Fall,
    Winter
}

namespace 枚举02
{
    class Program
    {
        static void Main(string[] args)
        {
            // 枚举的声明
            // enum 枚举的名字{枚举值1, 枚举值2, ...}

            // 在枚举的内部，每一个枚举都为每一个元素关联了一个整数值，默认如下：
            // 编号从0开始，代第一个元素，每一个元素的编号都递增1
            // 我们也可以自定义默认值
            // 另外，允许为多个枚举值制定同一个基础量

            Season season = Season.Winter;
            //Console.WriteLine(season++);
            //Console.WriteLine(season);

            int a = (int)season;
            Console.WriteLine(a);

            //switch (season)
            //{
            //    case Season.Spring:
            //        break;
            //    case Season.Summer:
            //        break;
            //    case Season.Fall:
            //        break;
            //    case Season.Winter:
            //        break;
            //    default:
            //        break;
            //}

            // 枚举和整数的转化
            int b = 1;

            if (b == (int)season)
            {

            }

            // 整数转换成枚举
            int c = 2;
            season = (Season)c;
            Console.WriteLine(season);

            // 1.枚举类型可以起到自注释的作用，更加规范，让程序显示的更加清晰
            // 2.enum是一个声明枚举的关键字，枚举变量的名字不能是enum
            // 3.在游戏开发中，通常用枚举类型来表示状态机
            // 状态机可以理解为游戏的状态，比如游戏暂停、游戏结束等等，状态机可以控制多个状态之间互相转换
        }
    }
}
